﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WTwitter.Model.Framework.TextSplitter;

namespace WTwitter.Model.Framework {
	public enum ItemType {
		TwitterStatus,
		DirectMessage,
		SearchTwitter,
		Other
	}

	/// <summary>
	/// タイムラインの１アイテムを表すクラス
	/// </summary>
	public interface ITimelineItem : IEquatable<ITimelineItem> {

		/// <summary>
		/// アイテムのタイプ
		/// </summary>
		ItemType Type { get; }

		/// <summary>
		/// アイテムを取得した情報源を表す文字列
		/// </summary>
		string TypeOfSourceTimeline { get; }

		/// <summary>
		/// ID番号
		/// </summary>
		long Id { get; }

		/// <summary>
		/// 返答である場合は返答先アイテムのID。該当がない場合はnull
		/// </summary>
		long? InReplyTo { get; }

		/// <summary>
		/// アイテムを投稿したユーザー
		/// </summary>
		IUser User { get; }

		/// <summary>
		/// 本文
		/// </summary>
		string Text { get; }

		/// <summary>
		/// 本文のテキストを意味のある要素（TextComponent）に分解したもの
		/// </summary>
		List<TextComponent> TextComponents { get; }

		/// <summary>
		/// このアイテムの詳細な説明文
		/// 改行を含むプレーンテキスト
		/// </summary>
		string DetailDescription { get; }

		/// <summary>
		/// 作成日
		/// </summary>
		DateTime CreatedAt { get; }

		bool Favorited { get; }
	}
}
